/*
Copyright (C) 2008 Matthew Perry

This library is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This libary/program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

using System;

namespace BaseTools.IO.Binary
{
	/// <summary>
	/// Seek position
	/// </summary>
	public enum SeekPos
	{
		/// <summary>
		/// Beginning
		/// </summary>
		Begin,
		
		/// <summary>
		/// Current
		/// </summary>
		Current,
		
		/// <summary>
		/// End
		/// </summary>
		End
	}
	
	/// <summary>
	/// A random-access read-only byte stream
	/// </summary>
	[Obsolete()]
	public interface IByteReader
	{
		/// <summary>
		/// Seek to a position
		/// </summary>
		/// <param name="pos">The position to seek to</param>
		/// <param name="origin">The origin of the seek</param>
		void Seek(long pos, SeekPos origin);
		
		
		/// <summary>
		/// Read bytes from the stream
		/// </summary>
		/// <param name="size">The number of bytes to read</param>
		/// <returns>The bytes from the stream</returns>
		byte[] ReadBytes(int size);
		
		/// <summary>
		/// Read a byte from the stream
		/// </summary>
		/// <returns>A byte from the stream</returns>
		byte ReadByte();
		
		/// <summary>
		/// Closes the stream if necessary
		/// </summary>
		void Close();
	}
}
